/**
* @project admin-go-api
* @name sysDept
* @descriptions 部门控制层
* @author 寒锋
* @date 2023-12-18 16:21:32
 */

package controller

import (
	"admin-go-api/api/entity"
	"admin-go-api/api/service"
	"admin-go-api/common/response"
	"admin-go-api/constants"
	"fmt"
	"github.com/gin-gonic/gin"
	"strconv"
)

var sysDept = entity.SysDept{}

// GetSysDetList
// @Summary 部门列表
// @Produce json
// @Description 部门列表
// @Security ApiKeyAuth
// @Param dept_name query string false "部门名称"
// @Param dept_status query int false "部门状态"
// @Success 200  {object} response.Result
// @Router /api/sysDept/index [get]
func GetSysDetList(c *gin.Context) {
	deptName := c.Query("dept_name")
	deptStatus, _ := strconv.Atoi(c.Query("dept_status"))
	service.SysDeptService().GetSysDeptList(c, deptName, uint(deptStatus))
}

// GetSysDeptVoList
//  @Summary 部门下拉列表
// @Produce json
// @Description 部门下拉列表
// @Security ApiKeyAuth
// @Success 200 {object} response.Result
// @Router /api/sysDept/vo/list [get]
func GetSysDeptVoList(c *gin.Context) {
	service.SysDeptService().QuerySysDeptVoList(c)
}

// CreateSysDept
// @Summary 添加部门
// @Produce json
// @Description 添加部门
// @Security ApiKeyAuth
// @Param data body entity.SysDept true "data"
// @Success 200 {object} response.Result
// @Router /api/sysDept/store [post]
func CreateSysDept(c *gin.Context) {
	err := c.ShouldBind(&sysDept)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysDeptService().CreateSysDept(c, sysDept)
}

// GetSysDeptById
// @Summary 部門詳情
// @Produce json
// @Description 部門詳情
// @Security ApiKeyAuth
// @Param id query int true "deptId"
// @Success 200 {object} response.Result
// @Router /api/sysDept/show [get]
func GetSysDeptById(c *gin.Context) {
	id, _ := strconv.Atoi(c.Query("id"))
	service.SysDeptService().GetSysDeptById(c, uint(id))
}

// UpdateSysDept 修改部门
// @Summary 修改部门接口
// @Produce json
// @Description 修改部门接口
// @Security ApiKeyAuth
// @Param data body entity.SysDept true "data"
// @Success 200 {object} response.Result
// @router /api/sysDept/update [put]
func UpdateSysDept(c *gin.Context) {
	err := c.ShouldBind(&sysDept)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysDeptService().UpdateSysDept(c, sysDept)
}

// DeleteSysDeptById 根据id删除部门
// @Summary 根据id删除部门接口
// @Produce json
// @Description 根据id删除部门接口
// @Security ApiKeyAuth
// @Param data body entity.SysDeptIdDto true "data"
// @Success 200 {object} response.Result
// @router /api/sysDept/destroy [delete]
func DeleteSysDeptById(c *gin.Context) {
	var dto entity.SysDeptIdDto
	err := c.ShouldBind(&dto)
	if err != nil {
		response.Failed(c, int(constants.ApiCode.FAILED), fmt.Sprintf("参数错误（%s）", err.Error()))
	}
	service.SysDeptService().DeleteSysDeptById(c, dto)
}
